<template>
  <div>
    <v-dialog :show.sync="dialogVisible" width="90%">
      <div class="execution">
        <basic-container>
          <avue-crud
            ref="crud"
            :page.sync="page"
            :data="tableData"
            :table-loading="tableLoading"
            :option="tableOption"
            @on-load="getList"
            @search-change="searchChange"
            @refresh-change="refreshChange"
            @size-change="sizeChange"
            @current-change="currentChange"
            @row-update="handleUpdate"
            @row-save="handleSave"
            @row-del="rowDel"
          >
            <template slot="menuLeft">
              <el-button class="filter-item" size="small" @click="downloadLog()" type="warning" icon="el-icon-download">导出</el-button>
            </template>
          </avue-crud>
        </basic-container>
      </div>
    </v-dialog>
  </div>
</template>

<script>
import {
  fetchList,
  getObj,
  addObj,
  putObj,
  delObj,
  downloadLogObj
} from "@/admin/api/sys-quartz-log"
import { tableOption } from "@/admin/const/sys-quartz-log"
import { mapGetters } from "vuex"

export default {
  name: "sysquartzlog",
  data () {
    return {
      searchForm: {},
      tableData: [],

      page: {
        total: 0, // 总页数
        currentPage: 1, // 当前页数
        pageSize: 10 // 每页显示多少条
      },
      tableLoading: false,
      dialogVisible: false,
      fullscreen: false,
      tableOption: tableOption
    }
  },
  computed: {
    ...mapGetters(["permissions"])
    // permissionList() {
    //     return {
    //         addBtn: this.vaildData(this.permissions.generator_sysquartzlog_add, false),
    //         delBtn: this.vaildData(this.permissions.generator_sysquartzlog_del, false),
    //         editBtn: this.vaildData(this.permissions.generator_sysquartzlog_edit, false)
    //     };
    // }
  },
  methods: {
    getList (page, params) {
      this.tableLoading = true
      fetchList(
        Object.assign(
          {
            current: page.currentPage,
            size: page.pageSize
          },
          params,
          this.searchForm
        )
      )
        .then(response => {
          this.tableData = response.data.data.records
          this.page.total = response.data.data.total
          this.tableLoading = false
        })
        .catch(() => {
          this.tableLoading = false
        })
    },
    rowDel: function (row, index) {
      this.$confirm("是否确认删除ID为" + row.logId, "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(function () {
          return delObj(row.logId)
        })
        .then(data => {
          this.$message.success("删除成功")
          this.getList(this.page)
        })
    },
    handleUpdate: function (row, index, done, loading) {
      putObj(row)
        .then(data => {
          this.$message.success("修改成功")
          done()
          this.getList(this.page)
        })
        .catch(() => {
          loading()
        })
    },
    handleSave: function (row, done, loading) {
      addObj(row)
        .then(data => {
          this.$message.success("添加成功")
          this.getList(this.page)
          done()
        })
        .catch(() => {
          loading()
        })
    },
    sizeChange (pageSize) {
      this.page.pageSize = pageSize
    },
    currentChange (current) {
      this.page.currentPage = current
    },
    searchChange (form, done) {
      this.searchForm = form
      this.page.currentPage = 1
      this.getList(this.page, form)
      done()
    },
    refreshChange () {
      this.getList(this.page)
    },
    show () {
      this.dialogVisible = true
      this.getList(this.page, this.params)
    },
    downloadLog () {
      this.publicExport('定时任务日志数据', '/admin/task/jobs/logs/download', this.searchForm)
    }
  }
}
</script>
